#include "registeraccount.h"
#include "ui_registeraccount.h"

RegisterAccount::RegisterAccount(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::RegisterAccount)
{
    ui->setupUi(this);
    //去窗口边框
    setWindowFlags(Qt::FramelessWindowHint | windowFlags());
    //把窗口背景设置为透明;
    setAttribute(Qt::WA_TranslucentBackground);
    //创建一个登录窗口
    LoginPage = new LoginAndRegistration;
}

RegisterAccount::~RegisterAccount()
{
    delete ui;
    delete LoginPage;
    db.close();
}

void RegisterAccount::on_toolButton_clicked()
{
    showMinimized();
}

void RegisterAccount::on_toolButton_2_clicked()
{
    close();
}

void RegisterAccount::mouseMoveEvent(QMouseEvent *e)
{
    if (e->buttons() & Qt::LeftButton) {
               this->move(this->x() + e->globalX() - p.x(), this->y() + e->globalY() - p.y());
               p = e->globalPos();
           }
}

void RegisterAccount::mousePressEvent(QMouseEvent *e)
{
    if (e->button() == Qt::LeftButton) {
               p = e->globalPos();
    }
}

bool RegisterAccount::registerOperation()
{
    QMap<QString, QString>::iterator iter;//定义一个迭代器
    //遍历映射
    for (iter = pUserMap.begin(); iter != pUserMap.end(); ++iter)
    {
        if(iter.key()==ui->lineEdit->text())
        {
            QMessageBox::about(this,"注册失败","用户名已占用");
            return false;

        }
    }
    if(ui->lineEdit_2->text()!=ui->lineEdit_3->text())
    {
        QMessageBox::about(this,"注册失败","两次密码不一致");
        return false;
    }
    else
    {
        QMessageBox::about(this,"注册成功","你已成功注册");
        return true;
    }
}


void RegisterAccount::queryDatabaseMessage()
{
    // 添加数据库驱动
    db = QSqlDatabase::addDatabase("QSQLITE");
    // 设置数据库名（文件路径）
    db.setDatabaseName("g:/qtchengxun/build-text-Desktop_Qt_5_9_9_MinGW_32bit-Debug/MyDataBase.db");
    // 打开数据库
    if (!db.open())
    {
        qDebug() << "数据库打开失败：" << db.lastError().text();
        exit(-1);
    } else
    {
            qDebug() << "数据库打开成功";
            // 在这里执行数据库操作
            QString sql = "SELECT * FROM user;";
            QSqlQuery query; //定义一个查询
            if(!query.exec(sql))
                {
                    qDebug()<<query.lastError();
                }
                else
                {
                    qDebug()<<"ok";
            }
            //遍历查询到的所有的记录
            while (query.next()==true)
            {
            QString name = query.value(0).toString();
            QString password = query.value(1).toString();
            pUserMap.insert(name,password);
            }
            // 关闭数据库
            db.close();
        }
}

void RegisterAccount::on_pushButton_clicked()
{
    qDebug()<<"点击按钮"<<endl;
    queryDatabaseMessage();
    //如果注册操作无误 将注册信息插入到数据库中
    if(registerOperation()==true)
    {
        // 添加数据库驱动
        db = QSqlDatabase::addDatabase("QSQLITE");
        // 设置数据库名（文件路径）
        db.setDatabaseName("g:/qtchengxun/build-text-Desktop_Qt_5_9_9_MinGW_32bit-Debug/MyDataBase.db");
        // 打开数据库
        if (!db.open())
        {
            qDebug() << "数据库打开失败：" << db.lastError().text();
            exit(-1);
        } else
        {
                qDebug() << "数据库打开成功";
                QString nowName = ui->lineEdit->text();
                QString nowPassword = ui->lineEdit_2->text();
                qDebug()<<nowName<<" "<<ui->lineEdit->text();
                // 在这里执行数据库操作
                QString sql = QString("INSERT INTO user(name,password)\
                                      VALUES ('%1','%2');").arg(nowName).arg(nowPassword);
                QSqlQuery query; //定义一个查询
                if(!query.exec(sql))
                    {
                        qDebug()<<query.lastError();
                    }
                    else
                    {
                        qDebug()<<"ok";
                }
                hide();
                LoginPage->show();
            }
    }

}

void RegisterAccount::on_toolButton_3_clicked()
{
    hide();
    LoginPage->show();
}
